﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using com.nm.Attributes;

namespace VerticaAPI.model
{
    /// <summary>
    /// 店铺信息
    /// </summary>
    public class DwShopModel
    {
        public class CreateModel : NeceModel
        {
            /// <summary>
            /// 地址
            /// </summary>
            [ParamDescription("地址")]
            public string Address { get; set; }

            /// <summary>
            /// 开店日期
            /// </summary>
            [ParamDescription("开店日期")]
            public string KdDate { get; set; }

            /// <summary>
            /// 关店日期
            /// </summary>
            [ParamDescription("关店日期")]
            public string GdDate { get; set; }

            /// <summary>
            /// 营业员人数
            /// </summary>
            [ParamDescription("营业员人数")]
            public long? PersonnelCount { get; set; }

            /// <summary>
            /// 营业面积
            /// </summary>
            [ParamDescription("营业面积")]
            public decimal? ShopArea { get; set; }

            /// <summary>
            /// 仓库面积
            /// </summary>
            [ParamDescription("仓库面积")]
            public decimal? StockArea { get; set; }

            /// <summary>
            /// 读取时间
            /// </summary>
            [ParamDescription("读取时间")]
            public DateTime? LoadTime { get; set; }

            /// <summary>
            /// 修改时间
            /// </summary>
            [ParamDescription("修改时间")]
            public DateTime? EtlDate { get; set; }
        }

        public class NeceModel : ShopCodeModel
        {
            /// <summary>
            /// 公司代码
            /// </summary>
            [ParamDescription("公司代码")]
            public string CompanyID { get; set; }

            /// <summary>
            /// 店铺级别代码
            /// </summary>
            [ParamDescription("店铺级别代码")]
            public string ShopLevelCode { get; set; }

            /// <summary>
            /// 店铺状态
            /// </summary>
            [ParamDescription("店铺状态")]
            public string ShopState { get; set; }

            /// <summary>
            /// 仓库内码
            /// </summary>
            [ParamDescription("仓库内码")]
            public string StockID { get; set; }

            /// <summary>
            /// 所属城市ID
            /// </summary>
            [ParamDescription("所属城市ID")]
            public string AreaID { get; set; }

            /// <summary>
            /// 零售区域ID
            /// </summary>
            [ParamDescription("零售区域ID")]
            public string OperationAreaID { get; set; }
        }

        public class ShopCodeModel : ShopListModel
        {
            /// <summary>
            /// 补货间隔天数
            /// </summary>
            [ParamDescription("补货间隔天数")]
            public long? ReplenishDay { get; set; }

            /// <summary>
            /// 做单拣货天数
            /// </summary>
            [ParamDescription("做单拣货天数")]
            public long? BillandPickDay { get; set; }

            /// <summary>
            /// 物流天数
            /// </summary>
            [ParamDescription("物流天数")]
            public long? TransportDay { get; set; }

            /// <summary>
            /// 补货任务执行时间
            /// </summary>
            [ParamDescription("补货任务执行时间")]
            public DateTime? ReplenishmentDate { get; set; }

            [ParamDescription("补货任务执行时间")]
            public string SuppleWeekText { get; set; }

            [ParamDescription("店铺陈列SKC数")]
            public int StandardDisplaySKC { get; set; }

            [ParamDescription("补货需求系数")]
            public decimal? ShopRate { get; set; }
        }

        public class ListModel : NeceModel
        {
            /// <summary>
            /// 城市
            /// </summary>
            [ParamDescription("城市")]
            public string AreaName { get; set; }

            /// <summary>
            /// 省份ID
            /// </summary>
            [ParamDescription("省份ID")]
            public string ParentAreaID { get; set; }

            /// <summary>
            /// 省份
            /// </summary>
            [ParamDescription("省份")]
            public string ParentAreaName { get; set; }

            /// <summary>
            /// 区域ID
            /// </summary>
            [ParamDescription("区域ID")]
            public string DistrictID { get; set; }

            /// <summary>
            /// 区域
            /// </summary>
            [ParamDescription("区域")]
            public string DistrictName { get; set; }

            /// <summary>
            /// 零售区域
            /// </summary>
            [ParamDescription("零售区域")]
            public string OperationAreaName { get; set; }

            /// <summary>
            /// 发货仓库
            /// </summary>
            [ParamDescription("发货仓库")]
            public string StockName { get; set; }

            /// <summary>
            /// 发货仓库Code
            /// </summary>
            [ParamDescription("发货仓库Code")]
            public string StockCode { get; set; }


            [ParamDescription("UserCode")]
            public string UserCode { get; set; }



            [ParamDescription("UserName")]
            public string UserName { get; set; }

            [ParamDescription("标记是否参与调拨系统调出店铺  0为否，1为是 （默认为1）")]
            public long IsMoveShop { get; set; }

            [ParamDescription("标记是否参与调拨系统调入店铺  0为否，1为是 （默认为1）")]
            public long IsInShop { get; set; }

            [ParamDescription("标记是否参与补、配       0为否，1为是     （默认为1）")]
            public long ISDwMvShop { get; set; }
        }

        public class ModifyModel
        {
            /// <summary>
            /// 店铺列表
            /// </summary>
            [ParamDescription("店铺列表")]
            public IList<ShopCodeModel> list { get; set; }

            /// <summary>
            /// 补货间隔天数
            /// </summary>
            [ParamDescription("补货间隔天数")]
            public int? newReplenishDay { get; set; }

            /// <summary>
            /// 做单拣货天数
            /// </summary>
            [ParamDescription("做单拣货天数")]
            public int? newBillandPickDay { get; set; }

            /// <summary>
            /// 物流天数
            /// </summary>
            [ParamDescription("物流天数")]
            public int? newTransportDay { get; set; }

            /// <summary>
            /// 补货任务执行时间
            /// </summary>
            [ParamDescription("补货任务执行时间")]
            public DateTime? newReplenishmentDate { get; set; }

            [ParamDescription("补货任务执行时间")]
            public string newSuppleWeekText { get; set; }

            [ParamDescription("补货需求系数")]
            public decimal? newShopRate { get; set; }

            [ParamDescription("UserCode")]
            public string UserCode { get; set; }

            [ParamDescription("标记是否参与调拨系统调出店铺  0为否，1为是 （默认为1）")]
            public long IsMoveShop { get; set; } = -1;

            [ParamDescription("标记是否参与调拨系统调入店铺  0为否，1为是 （默认为1）")]
            public long IsInShop { get; set; } = -1;

            [ParamDescription("标记是否参与补、配       0为否，1为是     （默认为1）")]
            public long ISDwMvShop { get; set; } = -1;
        }


        public class ShopDownListModel
        {
            [ParamDescription("店铺ID")]
            public string ShopID { get; set; }

            [ParamDescription("店铺编码")]
            public string ShopCode { get; set; }

            [ParamDescription("店铺名称")]
            public string ShopName { get; set; }
        }

        public class ShopListModel : ShopDownListModel
        {
            [ParamDescription("店铺内码")]
            public string ShopID { get; set; }
        }

        [Serializable]
        public class ShopListCityModel
        {
            [ParamDescription("店铺ID")]
            public string ShopID { get; set; }

            [ParamDescription("店铺名称")]
            public string ShopName { get; set; }

            [ParamDescription("省份")]
            public string ProvinceName { get; set; }

            [ParamDescription("地市")]
            public string CityName { get; set; }

            [ParamDescription("是否选中")]
            public bool Selected { get; set; }
        }
    }

    public class ShopAndCustBaseInfo
    {
        public class NeceModel
        {
            [ParamDescription("类型")]
            public string InfoType { get; set; }

            [ParamDescription("ID")]
            public string InfoID { get; set; }

            [ParamDescription("名称")]
            public string InfoName { get; set; }
        }
    }

    public class TransportDayModel
    {
        public class NeceModel
        {
            /// <summary>
            /// 城市ID
            /// </summary>
            [ParamDescription("城市ID")]
            public string AreaID { get; set; }

            /// <summary>
            /// 城市
            /// </summary>
            [ParamDescription("城市")]
            public string AreaName { get; set; }

            /// <summary>
            /// 物流天数
            /// </summary>
            [ParamDescription("物流天数")]
            public long? TransportDay { get; set; }
        }
    }


    public class SearchModel
    {
        [ParamDescription("商品区域")]
        public List<string> ParentAreaID { get; set; }

        [ParamDescription("省份")]
        public List<string> ProID { get; set; }

        [ParamDescription("城市")]
        public List<string> CityID { get; set; }

        [ParamDescription("发货仓")]
        public string StockID { get; set; }

        [ParamDescription("店铺名称或编码")]
        public string Keys { get; set; }

        [ParamDescription("零售分部")]
        public string SalePart { get; set; }
    }
}
